package com.example.admin.controller.setting;

import com.example.airobotsettings.dao.LoginDto;
import com.example.airobotsettings.dao.Result;
import com.example.airobotsettings.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    public UserController(UserService userService){
        this.userService = userService;
    };

    /**
     * 登录接口
     * @param dto 登录请求参数，包含用户名和密码
     * @return 登录结果，包含token和用户信息
     */
    @PostMapping("/login")
    public Result<LoginDto> login(@RequestBody LoginDto dto){
        // 调用service层的登录方法
        Result<LoginDto> result = userService.login(dto.getUsername(), dto.getPassword());
        return result;
    }
    
    /**
     * 用户注册接口
     * @param dto 注册请求参数，包含用户名、密码、真实姓名和邮箱
     * @return 注册结果，包含token和用户信息
     */
    @PostMapping("/register")
    public Result<LoginDto> register(@RequestBody LoginDto dto) {
        // 调用service层的注册方法
        Result<LoginDto> result = userService.register(
            dto.getUsername(), 
            dto.getPassword(), 
            dto.getRealName(), 
            dto.getEmail()
        );
        return result;
    }

    /**
     * 修改密码接口
     * @param dto 修改密码请求参数，包含用户名、旧密码和新密码
     * @return 修改结果
     */
    @PostMapping("/changePassword")
    public Result<Void> changePassword(@RequestBody LoginDto dto) {
        // 调用service层的修改密码方法
        Result<Void> result = userService.changePassword(
            dto.getUsername(),
            dto.getPassword(), // 旧密码
            dto.getNewPassword() // 新密码
        );
        return result;
    }

    /**
     * 退出登录接口
     * @param token 用户的登录token
     * @return 退出结果
     */
    @PostMapping("/logout")
    public Result<Void> logout(@RequestHeader(value = "Authorization", required = false) String token) {
        if (token == null || token.isEmpty()) {
            return Result.error(400, "未提供token");
        }
        
        // 移除Bearer前缀（如果存在）
        if (token.startsWith("Bearer ")) {
            token = token.substring(7);
        }
        
        // 调用service层的退出登录方法
        return userService.logout(token);
    }
}
